package musica;

import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

/**
 *
 * @author Jan, Hiago
 */
public class Playlist {

    private String nome;
    private Boolean emExecucao;
    private Set<Musica> listaMusicas;

    public Playlist(String nome) {
        this.nome = nome;
        this.emExecucao = false;
        this.listaMusicas = new HashSet<Musica>();
    }

    public Boolean getEmExecucao() {
        return emExecucao;
    }

    public void setEmExecucao(Boolean emExecucao) {
        this.emExecucao = emExecucao;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void adicionarMusica(Musica mus) {
        listaMusicas.add(mus);
    }

    public void adicionarMusica(List<Musica> musicas) {
        for (Musica m : musicas) {
            adicionarMusica(m);
        }
    }

    public void removerMusica(Musica mus) {
        listaMusicas.remove(mus);
    }

    public void removerMusica(List<Musica> musicas) {
        for (Musica m : musicas) {
            removerMusica(m);
        }
    }

    public Set<Musica> getListaMusicas() {
        return listaMusicas;
    }

    public void reproduzirPlaylist() {
        setEmExecucao(true);
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }

        final Playlist other = (Playlist) obj;

        Set<Musica> otherList = other.getListaMusicas();

        if (listaMusicas.size() != otherList.size()) {
            return false;
        }
        for (Musica mus : otherList) {
            if (!listaMusicas.contains(mus)) {
                return false;
            }
        }
        return true;
    }

    public void executarMusica() {
        Iterator it = listaMusicas.iterator();
        while (it.hasNext()) {
            Musica m = (Musica) it.next();
            m.reproduzir();
        }
    }
}
